问题描述
我是初学者,在运行代码以从 API 端点提取数据时遇到 422 错误。我在谷歌上搜索了代码并意识到它是一个(不可处理的实体)状态代码,但我不知道如何修复它。
API 文档就在这里:https://github.com/fedspendingtransparency/usaspending-api/blob/master/usaspending_api/api_contracts/contracts/v2/search/spending_by_award.md
import requests
url = "https://api.usaspending.gov"
endpoint = "/api/v2/search/spending_by_award"
criteria = {
"filters": {
"award_type_codes": ["10"],"agencies": [
{
"type": "awarding","tier": "toptier","name": "Social Security Administration"
},{
"type": "awarding","tier": "subtier","name": "Social Security Administration"
}
],"legal_entities": [779928],"recipient_scope": "domestic","recipient_locations": [650597],"recipient_type_names": ["Individual"],"place_of_performance_scope": "domestic","place_of_performance_locations": [60323],"award_amounts": [
{
"lower_bound": 1500000.00,"upper_bound": 1600000.00
}
],"award_ids": [1018950]
},"fields": ["Award ID","Recipient Name","Start Date","End Date","Award Amount","Awarding Agency","Awarding Sub Agency","Award Type","Funding Agency","Funding Sub Agency"],"sort": "Recipient Name","order": "desc"
}
response = requests.post(f"{url}{endpoint}",params=criteria)
print(response.status_code)
解决方法
您可以修改多个字段的数据类型,即award_ids
应该是array[string]
,recipient_locations
由array[LocationObject]
组成
对于一个工作示例:
import requests
import json
url = "https://api.usaspending.gov/api/v2/search/spending_by_award"
payload = json.dumps({
"filters": {
"award_type_codes": [
"10"
],"agencies": [
{
"type": "awarding","tier": "toptier","name": "Social Security Administration"
},{
"type": "awarding","tier": "subtier","name": "Social Security Administration"
}
],"legal_entities": [
779928
],"recipient_scope": "domestic","recipient_type_names": [
"Individual"
],"place_of_performance_scope": "domestic","award_amounts": [
{
"lower_bound": 1500000,"upper_bound": 1600000
}
],"award_ids": [
"1018950"
]
},"fields": [
"Award ID","Recipient Name","Start Date","End Date","Award Amount","Awarding Agency","Awarding Sub Agency","Award Type","Funding Agency","Funding Sub Agency"
],"sort": "Recipient Name","order": "desc"
})
headers = {
'Content-Type': 'application/json','Cookie': 'cookiesession1=678A3E0DCDEFGHIJKLNOPQRSTUV08936'
}
response = requests.request("POST",url,headers=headers,data=payload)
print(response.text)
print(response.status_code)
结果:
{
"limit": 10,"results": [],"page_metadata": {
"page": 1,"hasNext": false,"last_record_unique_id": null,"last_record_sort_value": "None"
},"messages": [
[
"For searches,time period start and end dates are currently limited to an earliest date of 2007-10-01. For data going back to 2000-10-01,use either the Custom Award Download feature on the website or one of our download or bulk_download API endpoints as listed on https://api.usaspending.gov/docs/endpoints."
]
]
}