create class
add interface
IF_HTTP_EXTENSION
Double click method
add test code:
goto sicf
add handler class
save, back and activated
test
Test passed.
next:
create a DB table
and table type
back to handler class
add two methods
change handle_request method:
METHOD if_http_extension
~handle_request
.
* Objects
DATA
: lo_json_serializer
TYPE
REF
TO cl_trex_json_serializer
.
* Variables
DATA
: l_verb
TYPE string
.
DATA
: l_json
TYPE string
.
DATA
: ls_response
TYPE zlm_rest1_tab
.
* Retrieving the request method (POST, GET, PUT, DELETE)
l_verb
= server
->request
->get_header_field
( name
=
'~request_method'
)
.
* Only methods GET, POST, PUT, DELETE are allowed
IF
( l_verb
NE
'GET'
)
AND
( l_verb
NE
'POST'
)
AND
( l_verb
NE
'PUT'
)
AND
( l_verb
NE
'DELETE'
)
.
" For any other method the service should return the error code 405
CALL
METHOD server
->response
->set_status
(
code
=
'405'
reason
=
'Method not allowed'
)
.
CALL
METHOD server
->response
->set_header_field
(
name
=
'Allow'
value
=
'POST, GET, PUT, DELETE'
)
.
EXIT
.
ENDIF
.
CASE l_verb
.
WHEN
'POST'
.
" C (Create)
"TODO: call method CREATE of the model
CALL
METHOD post_data
EXPORTING
server
= server
IMPORTING
e_data
= ls_response
EXCEPTIONS
error
=
1
OTHERS
=
2
.
IF sy
-subrc
<>
0
.
ENDIF
.
WHEN
'GET'
.
" R (Read)
CALL
METHOD get_data
EXPORTING
server
= server
IMPORTING
e_data
= ls_response
.
WHEN
'PUT'
.
" U (Update)
ENDCASE
.
* CALL METHOD SERVER->RESPONSE->SET_CDATA( DATA = L_VERB ).
CREATE OBJECT
lo_json_serializer
EXPORTING
data
= ls_response
.
" Data to be serialized
* Serialize ABAP data to JSON
CALL
METHOD lo_json_serializer
->serialize
.
* Get JSON string
CALL
METHOD lo_json_serializer
->get_data
RECEIVING
rval
= l_json
.
* Sets the content type of the response
CALL
METHOD server
->response
->set_header_field
(
name
=
'Content-Type'
value
=
'application/json; charset=iso-8859-1'
)
.
CALL
METHOD server
->response
->set_cdata
(
data
= l_json
)
.
ENDMETHOD
.
保存,激活
然后测试
我用的postman
下载和使用参考:http://jingyan.baidu.com/article/eb9f7b6d861da9869364e83a
.html
简单点儿就是在sicf里测试,然后把网址复制过去就行了
get
post