Java를 사용하여 웹 서비스를 배우고 있습니다. 나는 기술적으로 멍청한데, 이것은 내가 작성한 코드이다. 어떤 방법이 어떤 방법이 다른 것보다 어떤 이점을 가지고 있는지, 어떤 것이 더 안전한지와 같은 것을 알지 못한다. 어느 것이 더 빠를 것입니까? 나는 너무 광범위한 답변을 요구하지는 않습니다. 짧은 간결한 사람이 할 것입니다. Jersey 2.x를 사용하여 REST 서비스를 만들었으며 REST 서비스를 사용하기 위해 클라이언트를 만들었습니다. 다음과 같이Jersey WebTarget 대 HTTPURLConnection
POST 자원은
@POST
@Path("postactivity")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public String createActivity(
@QueryParam("id") int id,
@QueryParam("description") String description,
@QueryParam("duration") int duration,
@QueryParam("name")String name)
{
//My code that creates Activity object from QueryParams is here.
}
가 지금은 자바 응용 프로그램 클라이언트를 만든 것이다. 위의 REST 서비스는 다음 두 가지 방법으로 사용합니다. 뉴저지
private static void doPost(){
Response entity = webTarget
.path("activities/postactivity")
.queryParam("id",2204)
.queryParam("description","Foo")
.queryParam("duration",100)
.queryParam("name", "Bar")
.request()
.post(null);
String entityRead = entity.readEntity(String.class);
System.out.println(entityRead);
Activity activityRead = GSON.fromJson(entityRead, Activity.class);
}
감사를 통해
방법 1사용할 수 WebTarget를 사용하여 HttpURLConnection의
private static void doPost(){
QueryString qs = new QueryString("id", "123"); //QueryString is a class created to build query, not important to the question.
qs.add("duration", "12");
qs.add("description", "This is description");
qs.add("name", "This is Name");
String url = "http://localhost:8080/webservices/webapi/activities/activity?" + qs;
URL obj;
try {
obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestProperty("Content-Type","application/json");
con.setRequestMethod("POST");
con.setRequestProperty("User-Agent", "Mozilla 5.0");
con.setDoOutput(true);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
Activity activity = GSON.fromJson(response.toString(), Activity.class); //This is for checking if i'm getting correct data back which I'm sending.
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
방법 2.
문제를 지적 해 주시겠습니까? 구현이 효과가 있습니다. 무엇을 갖고 싶습니까? 현재 RESTful 웹 서비스를 사용하는 모든 방법을 개관하고 싶은 것 같습니다. –
@ SergeyBrunov 저는 두 가지 중 어느 것이 권장되는지 알고 싶습니다. 하나를 사용하는 것이 다른 것에 비해 장점/단점이 있다면 알고 싶습니다. – NoobProgrammer