我试图添加一个API到现有的Web窗体站点。A)对不起,一切都是用VB写的,B)我有点新的API的,所以真的不知道我在做什么。
我的例子基于微软的教程:https://learn.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/using-web-api-with-aspnet-web-forms
我在Controllers文件夹中创建了一个默认控制器(名为vSend.vb),并在global.asax中添加了一个路由
Namespace Controllers
Public Class vSend
Inherits ApiController
' GET: api/vSend
Public Function GetValues() As IEnumerable(Of String)
Return New String() {"value1", "value2"}
End Function
' GET: api/vSend/5
Public Function GetValue(ByVal id As Integer) As String
Return "value"
End Function
' POST: api/vSend
Public Sub PostValue(<FromBody()> ByVal value As String)
End Sub
' PUT: api/vSend/5
Public Sub PutValue(ByVal id As Integer, <FromBody()> ByVal value As String)
End Sub
' DELETE: api/vSend/5
Public Sub DeleteValue(ByVal id As Integer)
End Sub
End Class End Namespace
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
RouteTable.Routes.MapHttpRoute(name:="DefaultApi", routeTemplate:="api/{controller}/{id}", defaults:=New With {Key .id = System.Web.Http.RouteParameter.[Optional]})
End Sub
我使用PostMan尝试发布一个简单的JSON数据包并获得响应:“消息”:“找不到与请求URI 'http://localhost:91/api/vSend'匹配的HTTP资源。",“MessageDetail”:“找不到与请求URI 'http://localhost:91/api/vSend'匹配的提供控制器名称的路由”
Image from Postman
任何帮助,让我指出正确的方向将不胜感激!
1条答案
按热度按时间lyr7nygr1#
对于任何web方法(API),你必须设置/tell/tag/setup代码作为web方法。
所以,假设你已经安装了jQuery(我们不都是吗???)。
所以,在给定的网页上?(代替创建一个单独的asmx页面?)。
然后在代码后面你需要:
然后,对于该页面中的任何方法,您必须将该方法标记为“webmethod”。
由于没有页面发布,这意味着web方法必须是后面代码中的“静态”方法。
因此,让我们创建一个web方法,它接受firstname和lastname,并返回一个全名。
所以,后面的代码是这样的:
现在,在客户端(标记),我们有这个:
所以,现在当我们运行时,我们得到/看到这个: