gpt4 book ai didi

api - MS Dynamics 365 商业中心。 API POST、PATCH、DELETE 不起作用

转载 作者:行者123 更新时间:2023-12-04 04:30:38 25 4
gpt4 key购买 nike

我们已经在我们的服务器上安装了 MS Dynamics 365 Business Central(我不知道如何查看当前安装的版本)。我们正在使用 oData v4 我们的请求的协议(protocol)。
任务
我们需要从 PHP 对该系统进行 API 调用
问题
当 GET 请求运行良好时,不可能发出 POST、PATCH、DELETE 请求。
得到
要求:
获取 https://d365bc.vendor.com:7058/attain/ODataV4/Company('{{company}}')/Customer
回复

{
"@odata.context": "https://d365bc.vendor.com:7058/attain/ODataV4/$metadata#Company('...')/Customer",
"value": [
{
"@odata.etag": "W/\"JzQ0O29EcmJmcGs4V3NRMHlEQ0Fxa0JxL1N0bi9xZjY5UDFQakZ0U2tBUGU1Kzg9MTswMDsn\"",
"No": "01121212",
"Name": "Spotsmeyer's Furnishings",
"Responsibility_Center": "",
"Location_Code": "YELLOW",
"Post_Code": "US-FL 37125",
"Country_Region_Code": "US",
"Phone_No": "",
"IC_Partner_Code": "",
"Contact": "Mr. Mike Nash",
"Salesperson_Code": "JR",
"Customer_Posting_Group": "FOREIGN",
"Gen_Bus_Posting_Group": "EXPORT",
"VAT_Bus_Posting_Group": "EXPORT",
"Customer_Price_Group": "",
"Customer_Disc_Group": "",
"Payment_Terms_Code": "1M(8D)",
"Reminder_Terms_Code": "FOREIGN",
"Fin_Charge_Terms_Code": "2.0 FOR.",
"Currency_Code": "USD",
"Language_Code": "ENU",
"Search_Name": "SPOTSMEYER'S FURNISHINGS",
"Credit_Limit_LCY": 0,
"Blocked": " ",
"Privacy_Blocked": false,
"Last_Date_Modified": "2020-06-18",
"Application_Method": "Manual",
"Combine_Shipments": true,
"Reserve": "Optional",
"Shipping_Advice": "Partial",
"Shipping_Agent_Code": "",
"Base_Calendar_Code": "",
"Balance_LCY": 0,
"Balance_Due_LCY": 0,
"Sales_LCY": 0,
"Global_Dimension_1_Filter": "",
"Global_Dimension_2_Filter": "",
"Currency_Filter": "",
"Date_Filter": "..11/13/20"
},
{
"@odata.etag": "W/\"JzQ0O08vNlVHSWVaZ1FGeG42d2JOa3k4Qm5uVHlkSGYzNk1ES2V5Y2E2S3hiekU9MTswMDsn\"",
"No": "01445544",
"Name": "Progressive Home Furnishings",
"Responsibility_Center": "",
"Location_Code": "YELLOW",
"Post_Code": "US-IL 61236",
"Country_Region_Code": "US",
"Phone_No": "",
"IC_Partner_Code": "",
"Contact": "Mr. Scott Mitchell",
"Salesperson_Code": "JR",
"Customer_Posting_Group": "FOREIGN",
"Gen_Bus_Posting_Group": "EXPORT",
"VAT_Bus_Posting_Group": "EXPORT",
"Customer_Price_Group": "",
"Customer_Disc_Group": "RETAIL",
"Payment_Terms_Code": "14 DAYS",
"Reminder_Terms_Code": "FOREIGN",
"Fin_Charge_Terms_Code": "2.0 FOR.",
"Currency_Code": "USD",
"Language_Code": "ENU",
"Search_Name": "PROGRESSIVE HOME FURNISHINGS",
"Credit_Limit_LCY": 0,
"Blocked": " ",
"Privacy_Blocked": false,
"Last_Date_Modified": "2018-09-19",
"Application_Method": "Manual",
"Combine_Shipments": true,
"Reserve": "Optional",
"Shipping_Advice": "Partial",
"Shipping_Agent_Code": "",
"Base_Calendar_Code": "",
"Balance_LCY": 1499.03,
"Balance_Due_LCY": 1499.03,
"Sales_LCY": 1499.03,
"Global_Dimension_1_Filter": "",
"Global_Dimension_2_Filter": "",
"Currency_Filter": "",
"Date_Filter": "..11/13/20"
},
删除
删除 https://d365bc.vendor.com:7058/attain/ODataV4/Company('{{company}}')/Customer(No='01121212')
{
"error": {
"code": "BadRequest",
"message": "Entity does not support delete."
}
}
我不确定 Create (POST) 或 Update (Patch) 的正确语法是什么
对于 POST 请求,我尝试复制现有值(取自 GET)并将其放入正文中。我收到以下回复:
{
"error": {
"code": "BadRequest_MethodNotAllowed",
"message": "Entity does not support insert."
}
}
有时,如果我提出绝对错误的请求,我会收到以下回复:
{
"error": {
"code": "BadRequest_MethodNotAllowed",
"message": "'POST' requests for 'Customer' of EdmType 'Entity' are not allowed within Microsoft Dynamics 365 Business Central OData web services."
}
}
我无法为客户 ProductItems 应用 CUD 操作。但是对于订单,它可以工作。
现有特权
如果我跟随

Setup & Extensions / Manual Setup / Users / [Select User]


在权限部分,分配的权限太多。其中,有一个SUPER特权项。据我所知,所有的名字都是定制的。这是分配权限的屏幕截图。
enter image description here
UPD 1。
我尝试遵循本指南: https://docs.microsoft.com/en-us/dynamics-nav/api-reference/v1.0/
我有本地安装,对我来说,不清楚任何操作的正确端点是什么。
例如,我可以提出以下要求:

https://d365bc.vendor.com:7057/attain/WS/CRONUS%20International%20Ltd/Page/Customer


结果,我得到了一些计划,但没有客户,或者与他们采取任何行动的可能性。
据我了解,本指南仅提供云安装示例。
Extension APIs:
https://<base URL>:<port>/<serverinstance>/api/<API publisher>/<API group>/<API version>
我做的一切正确吗?这些参数是什么意思?指南中没有提供任何解释。
更新.2
关于要求:

API must be enabled on the Business Central server instance:


enter image description here
所以端口是 7057,API URL 是 https://d365bc.vendor.com:7057/Attain/WS/
什么是WS,真的需要吗?通过上面的 URL,我得到了这个:
enter image description here

The user used for authentication must have a Web Service Access Key (created for the user in Business Central)


这部分没有任何内容,我添加了新 key 。现在它看起来像这样。但这并没有改变我的情况。仍然相同的错误:端口 7057 为 405,端口 7058 为 404。
enter image description here
p.s.简单地生成它就足够了吗?或者我们需要在某个地方使用它?

The user must have the required permissions within Business Central for the relevant API's.


是在下一页管理吗?
enter image description here
以下是响应示例:
enter image description here
enter image description here
网址在域名中使用正确的供应商名称执行后已更改。
我现在无法测试所有内容,因为我离 vac 上的笔记本电脑很远。谢谢大家的时间

最佳答案

OData 端点不同于 API 端点。
我建议使用 API,因为它是在 Business Central 中与数据交互的最新且更有效的方式。
API端点的文档可以在这里找到
https://docs.microsoft.com/en-us/dynamics-nav/api-reference/v1.0/ ,以及一些示例,例如更新客户、项目等。
您可以使用 OData 修改数据,但前提是驱动终结点的基础对象是页面(而不是查询),并且必须使用 InsertAllowed 进行标记。这没有 API 端点优化。
https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/webservices/use-odata-to-modify-data

关于api - MS Dynamics 365 商业中心。 API POST、PATCH、DELETE 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64817825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com