我用Spring 4和Spring security设置了一个简单的REST API
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mysabisabi-servlet.xml,
classpath*:META-INF/spring/applicationContext.xml,
classpath*:META-INF/spring/mysabisabi-security.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>mysabisabi-rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mysabisabi-rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
AccountController.java
@RestController
@RequestMapping(value="/api")
public class AccountController {
@RequestMapping(value="/update", method=RequestMethod.POST)
public ResponseEntity<GenericResponse> updateRegistrationToken(@RequestBody RegistrationToken token){
GenericResponse response = new GenericResponse();
//some code here
return new ResponseEntity<GenericResponse>(response, HttpStatus.ACCEPTED);
}
}
mysabisabi-servlet.xml
<bean id="jacksonObjectMapper" class="com.mysabisabi.mapper.JsonCustomMapper" />
<bean id="jackson2HttpMessageConverter"
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper" ref="jacksonObjectMapper" />
</bean>
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<ref bean="jackson2HttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven>
mysabisabi-security.xml
<http pattern="/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<intercept-url pattern="/oauth/token" access="isFullyAuthenticated()"/>
<csrf disabled="true"/>
<anonymous enabled="false"/>
<http-basic entry-point-ref="clientAuthenticationEntryPoint"/>
<!-- include this only if you need to authenticate clients via request parameters -->
<custom-filter ref="clientCredentialsTokenEndpointFilter" after="BASIC_AUTH_FILTER"/>
<access-denied-handler ref="oauthAccessDeniedHandler"/>
</http>
<http pattern="/api/*" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint"
access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false"/>
<csrf disabled="true"/>
<intercept-url pattern="/api/*" access="hasRole('ROLE_USER')"/>
<custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER"/>
<access-denied-handler ref="oauthAccessDeniedHandler"/>
应用程序上下文.xml
<mvc:annotation-driven />
<context:annotation-config />
<context:component-scan base-package="com.mysabisabi" />
<context:property-placeholder location="classpath:mysabisabi.properties" />
<tx:annotation-driven transaction-manager="transactionManager" />
//dataSource configuration
日志文件
2016-07-16 16:24:45 INFO RequestMappingHandlerMapping:537 - Mapped "{[/api/update],methods=[POST]}" onto public org.springframework.http.ResponseEntity<com.mysabisabi.dto.response.GenericResponse> com.mysabisabi.controller.AccountController.updateRegistrationToken(com.mysabisabi.dto.request.RegistrationToken)
当我尝试访问 http://localhost:8080/mysabisabi/api/update
我得到HTTPStatus 404未找到 - 请求的资源不可用
我已经尝试了/
和/*
作为url模式,但仍然相同。
有人能指出我错过了什么吗?
谢了。
您的配置看起来不错。更改web.xml中的以下代码。
<servlet> <servlet-name>mysabisabi-rest</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mysabisabi-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
还要检查下面的网址。加载上下文的顺序配置在 Web.xml中的位置 Spring服务项目
您的应用程序容器是什么?
例如,Tomcat会将应用程序名称添加到链接中,如<code>所示http://localhost:8080/mysabisabi/api/update,而谷歌应用引擎不会,如:http://localhost:8080/api/update
我正在按照一些教程从头开始建立一个spring mvc项目。最初,我将web应用程序配置为在Tomcat中运行。我编写了一个简单的controller类,请求点击“/”。但tomcat总是向我显示“HTTP状态404-找不到”错误。 我看了很多这样的问题,但那些答案对我都不起作用 删除tomcat安装并重新配置。当点击localhost:8080/时,我将获得tomcat主页。 检查了代码的拼写
我有一个xamarin应用程序,可以从webAPI中提取数据。我多次检查api地址,我确信它是正确的。当我调试代码时,服务器上出现404 not found错误。然而,当我将URL复制并粘贴到浏览器时,我得到了预期的结果。我不明白为什么我的应用程序返回404。 我的方法: 我的桥接方法到HttpClient的PostAsync方法: 代币:正确 API URL:正确(我从调试输出中检查“/”符号。
我能够得到一个Spring Boot项目的测试运行,但在@state测试上总是得到404。 奇怪的是,我可以通过打印出请求信息和授权头来判断它到达了正确的endpoint。我放入了一个debug语句,并验证了我可以使用与测试相同的凭据和endpoint进行调用。然而,测试总是失败的404。是不是我的设置中缺少了什么?
我正在用Laravel 8制作一个论坛,基本上每当用户在这个论坛上提问时,它应该被重定向到这个问题。 我还想使重定向过程基于问题的字段。
我创建了一个部署、一个服务和一个入口,以便能够从我的主机访问NGINX web服务器,但我一直没有找到404。经过长时间的故障排除,我已经到了一个非常欢迎帮助的地步。 步骤和相关yaml文件如下所示。 启用Minikube NGINX入口控制器 minikube插件支持入口 创建NGINX web服务器部署 创建ClusterIP服务以管理对POD的访问 创建入口以从集群外部访问服务 测验 连接到
问题内容: 我正在使用AngularJS 1.4.0和服务。以下代码将始终打印出一个空对象: 我试过了: 使用AngulerJS 1.3.15,并且在刷新浏览器时cookie不会持久存在(但至少会创建cookie)。 添加有效期。 确保在我的浏览器(Chrome)中启用了Cookie。 尝试使用普通的旧JS,但仍然无法正常工作。 我在任何地方都找不到类似的问题。 谢谢。 问题答案: 对于偶然发现此