私はREST APIを学び、フェッチを使用してJavascriptからJavaで書かれたPOSTサービスを呼び出そうとしています。リクエストが@Producesと@ConsumeがMediaTypeの場合にサービスに到達しません.APPLICATION_JSONjavascriptから呼び出しをフェッチしてJava RESTサービスにアクセスできない
同じAPIで他の単純なPOSTメソッドとGETメソッドが正しく動作していますが、JSONを送受信する必要がある場合データが機能していません。以下は
私の呼び出しフェッチである:以下
let options = {
method: "POST",
headers: new Headers({'content-type': 'application/json'}),
body: JSON.stringify({
"Title": "title"
})
};
const url = "http://localhost:8080/myserver/data/list";
return fetch(url, options);
を私のREST APIです:
@Path("/data")
public class Controller {
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/list")
public Response createList(CreateListJsonData dta) throws IOException {
System.out.println("in create list");
return Response.status(200)
.entity("{\"dummykey\"}:\"dummyVal\"")
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT")
.build();
}
CreateListJsonDataクラスは以下の通りです:
@XmlRootElement
public class CreateListJsonData {
private String Title;
public String getTitle() {
return Title;
}
public void setTitle(String title) {
Title = title;
}
}
は、web.xml:
<?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" version="3.0">
<display-name>myserver</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.myserver</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
Eclipse用のtomcatでAPIを実行しています。私が要求をトリガするとき、私は、コンソール上のメッセージの下に取得する:
com.sun.jersey.server.wadl.generators.AbstractWadlGeneratorGrammarGenerator attachTypes
INFO: Couldn't find grammar element for class javax.ws.rs.core.Response
誰もがここに私のミスを把握するために私を助けてくださいことはできますか?
'INFO:' - それはあなたがCORSに「標準」と考えられていない 'コンテンツ-type'が設定されているように、おそらく応答がクライアント –
に送信され、エラーではありませんあなたは 'CORS preflight' OPTIONSリクエストをトリガしています - あなたのサーバは' OPTIONS'リクエストメソッドを処理していますか? '.header("アクセス制御 - 許可 - メソッド "、" GET、POST、DELETE、PUT ")は、 –