0
我是安靜的webservices和遵循java restful api教程的新手。 除DELETE請求外,所有HTTP請求都正常工作。 我面臨與此鏈接中所述相同的問題。 REST - HTTP Status 405 - Method Not AllowedDELETE在郵遞員中給予405
也,在預定義的標題值郵遞員表示 允許→GET,OPTIONS,PUT(圖像鏈接低於)
我下面的正確語法和URL格式按說明書(在粘貼圖像),但刪除不起作用。
請讓我知道我在哪裏丟失。
編輯:源代碼:
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.koushik.javabrains.messenger.model.Message;
import org.koushik.javabrains.messenger.service.MessageService;
@Path("/messages")
public class MessageResource {
MessageService messageService = new MessageService();
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Message> getMessages(){
System.out.println("Hello There");
List<Message> returnedList = messageService.getAllMessages();
System.out.println(returnedList);
return returnedList;
}
@GET
@Path("/{messageId}")
@Produces(MediaType.APPLICATION_JSON)
public Message getMessage(@PathParam("messageId") long messageId){
System.out.println("Message returned");
return messageService.getMessage(messageId);
}
@POST
@Produces(MediaType.APPLICATION_JSON)
public Message addMessage(Message message){
return messageService.addMessage(message);
}
@PUT
@Path("/{messageId}")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Message updateMessage(@PathParam("messageId") long id , Message message){
message.setId(id);
return messageService.updateMessage(message);
}
@DELETE
@Path("/messageId")
@Produces(MediaType.APPLICATION_JSON)
public void deleteMessage(@PathParam("messageId") long id){
System.out.println("Hello There");
messageService.removeMessage(id);
}
}
package org.koushik.javabrains.messenger.service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.koushik.javabrains.messenger.database.DatabaseClass;
import org.koushik.javabrains.messenger.model.Message;
public class MessageService {
private Map<Long , Message> messages = DatabaseClass.getMessages();
public MessageService(){
messages.put(1L, new Message(1, "Hello World" , "koushik"));
messages.put(2L, new Message(2, "Hello Jersey" , "Koushik"));
}
public List<Message> getAllMessages(){
return new ArrayList<Message>(messages.values());
}
public Message getMessage(long id){
Message m = messages.get(id);
System.out.println("Value of message "+m);
return m;
}
public Message addMessage(Message message){
message.setId(messages.size()+1);
messages.put(message.getId(), message);
return message;
}
public Message updateMessage(Message message){
if(message.getId() <=0){
return null;
}
messages.put(message.getId(), message);
return message;
}
public Message removeMessage(long id){
return messages.remove(id);
}
}
package org.koushik.javabrains.messenger.database;
import java.util.HashMap;
import java.util.Map;
import org.koushik.javabrains.messenger.model.Message;
import org.koushik.javabrains.messenger.model.Profile;
public class DatabaseClass {
private static Map<Long , Message> messages = new HashMap();
private static Map<String , Profile> profiles = new HashMap();
public static Map<Long , Message> getMessages() {
return messages;
}
public static Map<String, Profile> getProfiles() {
return profiles;
}
}
除了刪除其他請求都工作正常。 發送DELETE服務器正在返回HTTP -405方法不允許。
也發送刪除請求,則在標題值郵遞員顯示 允許→GET,OPTIONS,PUT
感謝
通常人們會問你,如果你有機會到服務器,或者重新檢查您的網址,那或許服務器不允許刪除操作。但是我確定你正在關注Javabrains的教程,我自己也經歷了這個教程,並且我知道你的url很好。它看起來像錯誤是在你的服務器代碼中的某個地方..也顯示了這一點? – Ray
嗨雷,我附上服務器代碼請看看這個。我能夠執行除刪除之外的其他操作。 – Gaurabh
正如後面提到的那樣......將應用程序類型寫爲* application/json *而不是* text/html * –