技术开发 频道

精通 Grails: RESTful Grails

  实现 PUT

  您需要支持的最后一个 HTTP 方法就是 PUT。了解了 POST 之后,会知道代码基本是一样的。惟一不同的就是它无法直接从 XML 构造类,您需要向 GORM 寻求现有的类。然后,airport.properties = params.airport 行会用新的 XML 数据来替代现有的字段数据,如清单 21 所示:

  清单 21. 响应 HTTP PUT

def index = {      
  switch(request.method){
    
case "POST":  //...
    
case "GET":   //...
    
case "PUT":  
      def airport
= Airport.findByIata(params.airport.iata)
      airport.properties
= params.airport
      
if(airport.save()){
        response.status
= 200 // OK
        render airport
as XML
      }
      
else{
        response.status
= 500 //Internal Server Error
        render
"Could not create new Airport due to errors:\n ${airport.errors}"
      }
      break
    
case "DELETE": //...
  }      
}

  创建一个名为 editAirport.xml 的文件,如清单 22 所示:

  清单 22. editAirport.xml

<airport>
  
<iata>oma</iata>
  
<name>xxxEppley Airfield</name>
  
<city>Omaha</city>
  
<state>NE</state>
  
<country>US</country>
  
<lat>41.3019419</lat>
  
<lng>-95.8939015</lng>
</airport>

  最后,使用 cURL: curl --verbose --request PUT --header "Content-Type: text/xml" --data @editAirport.xml http://localhost:9090/trip/rest/airport 来测试它。

0
相关文章