我们在服务器上安装了MS Dynamics 365 Business Central(我不知道当前安装的版本如何查看)。我们使用oData v4协议进行请求。
任务
问题
GET
请求:
响应:
{
"@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"
},
删除
{
"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."
}
}
我无法为客户、产品项应用CUD操作,但对于订单可以。
现有权限
设置和扩展/手动设置/用户/[选择用户]
在权限部分,有太多的授权权限,其中包括超级特权项。据我所知,所有名称都是自定义的。这是已分配权限的截图。
更新 1.
我尝试遵循此指南:https://learn.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:
所以端口是7057,API URL是https://d365bc.vendor.com:7057/Attain/WS/
WS是什么,它真的是必需的吗?通过上面的URL,我得到了这个:
用于身份验证的用户必须具有Web服务访问密钥(在Business Central中为用户创建)
在此部分中没有任何内容,我添加了新密钥。现在看起来像这样。 但在我的情况下没有改变任何东西。 端口7057的错误仍然是405,端口7058的错误仍然是404。
p.s. 仅生成它就足够了吗? 还是我们需要在某个地方使用它?
用户必须在Business Central中具有相关API的所需权限。
这个页面是否在此托管?
以下是响应示例:
执行后,URL更改为正确的供应商名称。