首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对frappe.cloud API的400个坏请求

对frappe.cloud API的400个坏请求
EN

Stack Overflow用户
提问于 2022-06-17 06:06:18
回答 1查看 94关注 0票数 1

我收到了400个关于frappe.cloud API的坏请求,当我试图使用http.NewRequest调用它时,当我使用postman检查它时,这个API工作得很好。以下是API

代码语言:javascript
复制
https://xxxx.frappe.cloud/api/resource/Item?fields=["name","item_name","item_group","description"]&filters=[["Item","item_group","=","xxx Product"]]

如果我使用相同的golang代码来调用相同的API而没有out过滤器,那么它可以很好地工作。以下是工作API

代码语言:javascript
复制
https://xxxx.frappe.cloud/api/resource/Item?fields=["name","item_name","item_group","description"]

代码如下

代码语言:javascript
复制
func FetchProperties(dataChannel models.DataChannel) (map[string]interface{}, error) {
thisMap := make(map[string][]map[string]interface{})
client := &http.Client{}
req, err := http.NewRequest("GET", dataChannel.APIPath, nil)
if err != nil {
    commons.ErrorLogger.Println(err.Error())
    return nil, err
}
eds, err := GetDecryptedEDSByEDSID(dataChannel.EDSId)
if err != nil {
    commons.ErrorLogger.Println(err.Error())
    return nil, &commons.RequestError{StatusCode: 400, Err: err}
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", eds.DataSource.Auth.Token)
response, err := client.Do(req)
if err != nil {
    commons.ErrorLogger.Println(err.Error())
    return nil, err
}
data, err := ioutil.ReadAll(response.Body)
if err != nil {
    commons.ErrorLogger.Println(err.Error())
    return nil, &commons.RequestError{StatusCode: 400, Err: err}
}
if response.StatusCode == 200 {
    err = json.Unmarshal(data, &thisMap)
    if err != nil {
        commons.ErrorLogger.Println(err.Error())
        return nil, &commons.RequestError{StatusCode: 400, Err: err}
    }
    return thisMap["data"][0], err
} else {
    return nil, &commons.RequestError{StatusCode: response.StatusCode, Err: errors.New("getting " + strconv.Itoa(response.StatusCode) + " From Data channel API")}
}
EN

回答 1

Stack Overflow用户

发布于 2022-07-20 03:55:37

邮递员可以选择将请求转换为编程语言。

下面是发送请求的工作代码。包装主

代码语言:javascript
复制
import (
  "fmt"
  "strings"
  "net/http"
  "io/ioutil"
)

func main() {

  url := "https://xxx.frappe.cloud/api/resource/Item?fields=%5B%22name%22,%22item_name%22,%22item_group%22,%22description%22%5D&filters=%5B%5B%22Item%22,%22item_group%22,%22=%22,%22xxx%20Product%22%5D%5D%0A"
  method := "GET"

  payload := strings.NewReader(`{
    "payload": {},
    "url_key": "",
    "req_type": ""
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Cookie", "full_name=foo; sid=secret_sid; system_user=yes; user_id=foobar; user_image=")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := ioutil.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72654965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档