2017-09-14 93 views
0

無論何時輸入@符號,我都會得到一個錯誤,而不是我期望的空角色列表。方法是roles(),URL的最後部分是輸入參數。我需要使用@符號,因爲我想使用電子郵件地址作爲輸入參數。WSO2在方法中不允許使用'@'符號作爲輸入參數

TERMINAL COMMAND:捲曲--header '接受:應用/ JSON' --header '授權:承載b85f73f2-f2fb-3a92-9066-d0af4d6a50eb' 'https://apitst.linkedsystems.uk/account/v1/user/roles/oeoe' OUTPUT: { 「角色」: []}

WITH '@' 符號端子COMMAND:捲曲--header '接受: 應用/ JSON' --header '授權:承載 b85f73f2-f2fb-3a92-9066-d0af4d6a50eb' 'https://apitst.linkedsystems.uk/account/v1/user/roles/[email protected]' OUTPUT : 404狀態 報告運行時間 錯誤未找到匹配的資源rce發現給定 API請求

任何想法如何更改API,以便它允許@符號作爲輸入參數? 我試過改變carbon.xml & user-mgt.xml但沒有運氣。

任何幫助,非常感謝。謝謝。

回答

0

這裏的問題是,你不是urlencoding你正在發送的數據。如果您在使用curl調用API,如下改變curl命令,

curl -G --header 'Accept: application/json' --header 'Authorization: Bearer b85f73f2-f2fb-3a92-9066-d0af4d6a50eb' 'https://apitst.linkedsystems.uk/account/v1/user/roles/[email protected]' -k 

新令牌替換標記值,它應該做的伎倆。

0

你有兩個選擇使用「@」符號的API中

  1. 使用編碼值在URL中的@符號。如果您定義的API爲「/user/{email}」,則必須使用curl命令提供@符號的百分比編碼值。

例如:捲曲--header '接受:應用/ JSON' 'http://localhost:8280/testapi/user/test%40gmail.com'

<api xmlns="http://ws.apache.org/ns/synapse" name="testAPI" context="/testapi"> 
     <resource methods="GET" uri-template="/user/{email}"> 
      <inSequence> 
      <payloadFactory media-type="json"> 
       <format>{ "id": 1, "email": "$1"}</format> 
       <args> 
        <arg evaluator="xml" expression="get-property('uri.var.email')"/> 
       </args> 
      </payloadFactory> 
      <respond/> 
      </inSequence> 
     </resource> 
    </api> 
  • 如果用/用戶定義API/{+電子郵件}它會接受你的URL中的@符號(參見 - https://tools.ietf.org/html/rfc6570#section-3.2.3
  • 例如:捲曲--header「接受:應用/ JSON 'http://localhost:8280/testapi/user/[email protected]'

    相關問題