1

RESTjson サービスに問題があります。すべての REST 操作 (POST、PUT、DELETE、GET) に問題があります。各操作で IF-else ステートメントを使用する必要がありますが、問題が発生しています。たとえば、GET 操作では、いくつかの if-else ケースが必要です。I wantfindByNameまたは byidまたは with which ever フィールド。私のプログラムは、ケースを 1 つだけ (if を 1 つだけ) 使用すると正常に動作します。複数の if-else ステートメントを使用すると、プログラムが機能しません。私は同じ問題を抱えていDELETEます。私は何を間違っていますか?何をすべきですか?

ありがとう

def index = {
    switch (request.method) {

        case "POST":
            def trip = new Trip(params.trip)

            if (trip.save()) {
                response.status = 201 // Created
                render trip as JSON
            } else {
                response.status = 500 //Internal Server Error
                render "Could not create new Trip due to errors:\n ${trip.errors}"
            }
            break
        case "GET":
            if (params.city) render Trip.findByCity(params.city) as JSON

            // else if(params.name)render Trip.findByName(params.name) as JSON
            //else if(params.city)render Trip.findByCity(params.city)as JSON
            // else render Trip.list() as JSON
            break
        case "PUT":
            def trip = Trip.get(params.name)
            trip.properties = params.Trip
            if (trip.save()) {
                response.status = 200 // OK
                render trip as JSON
            } else {
                response.status = 500 //Internal Server Error
                render "Could not create new Trip due to errors:\n ${trip.errors}"
            }
            break
            break
        case "DELETE":
            if (params.name) {
                def trip = Trip.findByName(params.name)
                if (trip) {
                    trip.delete()
                    render "Successfully Deleted."
                } else {
                    response.status = 404 //Not Found
                    render "${params.name} not found."
                }
            } else {
                response.status = 400 //Bad Request
                render """DELETE request must include the NAME code
                  Example: /rest/airport/name
        """
                break
            }
    }
}
4

0 に答える 0