2014-11-04 84 views
0

我在春天定義的REST服務如下:映射JSON對象春對象REST服務

@RequestMapping(value = "/create", method = RequestMethod.POST) 
    @ResponseBody 
    public ResponseEntity<String> addArticle(@RequestBody Article article){ 
     try{ 
     articleService.addArticle(article.getTitle(), 
            article.getContent(), 
            article.getTags(), 
            article.getPublishStatus(), 
            article.getCompanyId(), 
            article.getCategory()); 
     return new ResponseEntity<String>(HttpStatus.OK); 
     } catch (Exception e){ 
     e.printStackTrace(); 
     return new ResponseEntity<String>(e.getMessage(), HttpStatus.OK); 
     } 
    } 

而且我的文章被定義如下:

public class Article { 

    private int id; 

    private String title; 

    private String content; 

    private String smsContent; 

    public String getSmsContent() 
{ 
    return smsContent; 
} 



public void setSmsContent(String smsContent) 
{ 
    this.smsContent = smsContent; 
} 


private String[] tags; 

    private int companyId; 

    private String category; 


    public String getCategory(){ 
     return category; 
    } 



    public void setCategory(String category){ 
     this.category = category; 
    } 


    private byte publishStatus; 


    public String getTitle(){ 
     return title; 
    } 


    public void setTitle(String title){ 
     this.title = title; 
    } 


    public String getContent(){ 
     return content; 
    } 


    public void setContent(String content){ 
     this.content = content; 
    } 


    public String[] getTags(){ 
     return tags; 
    } 


    public void setTags(String[] tags){ 
     this.tags = tags; 
    } 


    public int getCompanyId(){ 
     return companyId; 
    } 


    public void setCompanyId(int companyId){ 
     this.companyId = companyId; 
    } 


    public byte getPublishStatus(){ 
     return publishStatus; 
    } 


    public void setPublishStatus(byte publishStatus){ 
     this.publishStatus = publishStatus; 
    } 



    public int getId(){ 
     return id; 
    } 



    public void setId(int id){ 
     this.id = id; 
    } 



} 

我如何把這個使用Angular的服務?我嘗試了以下代碼:

function createArticle(name, companyId, title, content, tags, category) { 
       var request = $http({ 
        method : 'POST', 
        url : '/inbound/api/article/create.json', 
        headers : { 
         'Content-Type' : 'application/x-www-form-urlencoded' 
        }, 
        transformRequest : function(obj) { 
         var str = []; 
         for (var p in obj) 
          str.push(encodeURIComponent(p) + "=" 
            + encodeURIComponent(obj[p])); 
         return str.join("&"); 
        }, 
        data : { 
         title : title, 
         content : content, 
         tags : tags, 
         companyId : companyId, 
         category: category 
        } 
       }); 

我收到錯誤415 (Unsupported Media Type)。有任何想法嗎?

+0

你嘗試過'Content-Type':'application/json'嗎? – luboskrnac 2014-11-04 18:35:05

回答

1

由於您正在使用JSON,因此您需要相應地設置您的表單和處理程序。

REST處理

@RequestMapping(value = "/create", method = RequestMethod.POST, consumes = "application/json")

headers : { 
    'Content-Type' : 'application/json' 
}, 
1

首先

您有:

@RequestMapping(value = "/create", method = RequestMethod.POST) 

只是/create

您有:

url : '/inbound/api/article/create.json', 

繼續刪除.json這就是問題所在

一定要在對於ajax事件,你發送的數據是在JSON