0
点赞
收藏
分享

微信扫一扫

ICF Service based&nbsp…

哈哈镜6567 2022-10-12 阅读 26


create class


​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



add interface 

IF_HTTP_EXTENSION

​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



Double click method


​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​


add test code:


​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



goto sicf


​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​


add handler class

​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​
save, back and activated
​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​
test
​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​
Test passed.





next:





and table type



​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​





back to handler class



add two methods



​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

Pay attention to the parameters
​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​



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  ) .

   





保存,激活





然后测试



我用的postman



.html







简单点儿就是在sicf里测试,然后把网址复制过去就行了



get



​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​
post



打外部断点看下:
​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​
查看库表
​​​

ICF <wbr>Service <wbr>based <wbr>on <wbr>REST <wbr>and <wbr>JSON <wbr>simple <wbr>demo

​​​

举报

相关推荐

0 条评论