我花了一些时间与 教程使用ASP.NET Core创建Web API 根据建议 在上一个查询中. I'm now trying to generate a client to invoke CICS 网络服务 JSPG2 but I'我在编写我的API测试时遇到了麻烦。我怀疑我'm trying to approach the problem from the wrong end, and the tutorial's approach should be abandoned.
此图显示了我正在尝试实现的目标
我有软件(Micro Focus)为我们的COBOL和Mainframe支持 VB.Net software that generates COBOL for 网络服务s and other functions。我们的软件已生成程序JSPG2,这是服务MyJSv中的一个操作,该操作由JSON消息IJSPG2调用,并以消息OJSPG2进行响应。我正在尝试开发上图中表示为Interface MyJSv-JSPG2的接口代码。我最终的计划是 我们的软件 to generate these interfaces from the CICS 网络服务 message definitions, but the current objective is to develop an interface manually so that I have a pattern to work from.
建议我遵循本教程。现在,我认为本教程向我展示了如何创建服务。我不想创建Web服务器,我想创建Web客户端。
如果我是对的,请指出相关的教程供我阅读。
如果我错了,并且本教程是正确的模式,那么我需要克服当前的问题,将正确的代码放入POST对象,并设置端点地址。
无论哪种方式,您的帮助都将不胜感激。罗伯特
如果我们继续本教程的方法:-
这是我要做的:-
我生成了一个名为MyJSv的API项目,并在其中创建了JSPG2的控制器。我在“模型”文件夹中开发了层次结构类IJSPG2.cs和OJSPG2.cs,以匹配从服务器(大型机)端开始的COBOL记录开始的消息。我添加并注册了数据库上下文。到现在为止还挺好。
现在,我进入了教程阶段Scaffold a Controller。就像我使用的教程一样"具有操作的API控制器, using Entity Framework",然后在选择的对话框中:-
模型类IJSPG2(MyJSv.Models)
数据上下文类:JSPG2Context(MyJSv.Models)
Visual Studio反应为错误:-
TodoItemsController(源自ControllerBase)中的本教程POST代码是使用API Controller和Actions Using Entity Framework生成的,然后进行了稍微修改。
The equivalent code within MyJSvController, also derived from ControllerBase but generated using 具有操作的API控制器, is
这是完全不同的,所以我在这里写什么?它需要做的是将C#类IJSPG2转换为JSON,并将其发送到端点(http:// localhost:9003 / cics / services / JSPG2),并处理从JSON到OJSPG2的响应。我猜这就是
确实可以,但是我一直在努力了解迄今为止在.NET CODE 3.1(这是教程的先决条件)之前找到的教程代码和网络资源,或者对我来说是无法理解的(我正在学习C#,在使用VB.NET和ASP.NET约15年后,Web API和.NET一次全部实现。
此图显示了我正在尝试实现的目标
我有软件(Micro Focus)为我们的COBOL和Mainframe支持 VB.Net software that generates COBOL for 网络服务s and other functions。我们的软件已生成程序JSPG2,这是服务MyJSv中的一个操作,该操作由JSON消息IJSPG2调用,并以消息OJSPG2进行响应。我正在尝试开发上图中表示为Interface MyJSv-JSPG2的接口代码。我最终的计划是 我们的软件 to generate these interfaces from the CICS 网络服务 message definitions, but the current objective is to develop an interface manually so that I have a pattern to work from.
建议我遵循本教程。现在,我认为本教程向我展示了如何创建服务。我不想创建Web服务器,我想创建Web客户端。
如果我是对的,请指出相关的教程供我阅读。
如果我错了,并且本教程是正确的模式,那么我需要克服当前的问题,将正确的代码放入POST对象,并设置端点地址。
无论哪种方式,您的帮助都将不胜感激。罗伯特
如果我们继续本教程的方法:-
这是我要做的:-
我生成了一个名为MyJSv的API项目,并在其中创建了JSPG2的控制器。我在“模型”文件夹中开发了层次结构类IJSPG2.cs和OJSPG2.cs,以匹配从服务器(大型机)端开始的COBOL记录开始的消息。我添加并注册了数据库上下文。到现在为止还挺好。
现在,我进入了教程阶段Scaffold a Controller。就像我使用的教程一样"具有操作的API控制器, using Entity Framework",然后在选择的对话框中:-
模型类IJSPG2(MyJSv.Models)
数据上下文类:JSPG2Context(MyJSv.Models)
Visual Studio反应为错误:-
讨论(最初发布到VB.NET社区上的.NET CORE论坛)使我意识到我应该使用"具有操作的API控制器"。这克服了错误,但让我想知道下一步该怎么做。运行所选代码生成器时发生错误:
实体类型“ IJSPG2”需要定义主键。
如果您打算使用无密钥实体类型,请调用“ HasNoKey0”
TodoItemsController(源自ControllerBase)中的本教程POST代码是使用API Controller和Actions Using Entity Framework生成的,然后进行了稍微修改。
C#:
// POST: api/TodoItems
[HttpPost]
public async Task<ActionResult<TodoItem>> PostTodoItem(TodoItem todoItem)
{
_context.TodoItems.Add(todoItem);
await _context.SaveChangesAsync();
//return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem);
return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);
}
C#:
// POST api/<JSPG2Controller>
[HttpPost]
public void Post([FromBody] string value)
{
}
C#:
return CreatedAtAction(nameof(GetTodoItem), new { id = todoItem.Id }, todoItem);