TomcatサーバーでJerseyで残りのAPIを作成しようとしています。私のアプリケーションは他のサービス(データベースなし)から入力を収集します。 私は、次のPOJOを作成しました:tomcatでjerseyを使用して@POSTを使用したマップが必要です
//this a pojo for parameters the application takes in the @POST request, a location lat/long
@XmlRootElement
public class DestLatLong {
private String lat;
private String lng;
public DestLatLong(){}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
}
は、これらは、所定の場所に到達する応答に含まれる値は、チケットの価格です:
public class DestPriceResponse {
public DestPriceResponse() {
}
public String airport;
public String currency;
public String price;
public String getAirport() {
return airport;
}
public void setAirport(String airport) {
this.airport = airport;
}
public String getCurrency() {
return currency;
}
public void setCurrency(String currency) {
this.currency = currency;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
私はマップを使用する必要がありますかここでpojoがJSONに正しくマップされていますか?またはこのオブジェクトは十分ですか?以下は
要求を処理しなければならないクラスであり、応答を返す:
public class DestinationResource {
// Will map the resource to the URL todos
@Path("/api")
public class TodosResource {
// Allows to insert contextual objects into the class,
// e.g. ServletContext, Request, Response, UriInfo
@Context
UriInfo uriInfo;
@Context
Request request;
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public DestPriceResponse getDestPrice(String lat, String lng) {
DestPriceResponse priceResponse = new DestPriceResponse();
NearestAirports nearest = new NearestAirports();
nearest.parseNearestAirports(lat, lng);
return priceResponse;
}
私が使用しているPOSTリクエストがある:
http://localhost:8080/webapi/rest/api?lat=60&lng=0
とヘッダがあります。
をContent-Type = application/json
私は入れません:
HTTPステータス404 - 見つかりませんでした
タイプステータスレポート
メッセージオリジンサーバがターゲットの現在の表現 を見つけられませんでした
説明が見つかりませんまたはそれが存在することを開示するつもりはない。
のApache Tomcat/8.5.23
私の設定が含まれます:
rootProject.name = 'webapi'
とwebxml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>webapi</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Register resources and providers under com.vogella.jersey.first package. -->
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>webapi</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
どのように私は最高これをデバッグすることができ、何が間違っているのですか?
感謝を(あなたの代わりにPOSTを定義しました)。私はGETがより簡単なアプローチであることを発見したので、私は上記の例に従った。しかし、私がhttpClientでエンドポイントにGET要求を出すと、まだ見つからない。それはルーティングの問題、それをデバッグする簡単な方法であり、根本的な原因になる可能性がありますか? – Tlink