springmvc添加mock json的支援,springmvcjson
在springmvc中 添加對伺服器classPath下的json檔案解析之後返回的mock功能:
import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import com.fasterxml.jackson.databind.JsonNode;import com.fasterxml.jackson.databind.ObjectMapper;@RestController@RequestMapping("/mock")public class MockController { @RequestMapping(value = "/{module}/{action}", method = RequestMethod.POST) public JsonNode mockContent(@PathVariable String module, @PathVariable String action, HttpServletRequest request, HttpServletResponse response) { JsonNode actualObj = null; InputStream fis = null; try { ClassLoader ctxLoader = Thread.currentThread().getContextClassLoader(); URL resURL = ctxLoader.getResource(action + ".json"); URLConnection resConn = resURL.openConnection(); resConn.setUseCaches(false); fis = resConn.getInputStream(); StringBuilder builder = new StringBuilder(); int ch; while ((ch = fis.read()) != -1) { builder.append((char) ch); } ObjectMapper mapper = new ObjectMapper(); actualObj = mapper.readTree(builder.toString()); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { } } } return actualObj; }}
相應的也可以增加其他的類型支援,比如string資料, 或者是其他的。由於 springmvc rest介面預設會使用json的轉化器,所以需要轉化成對應的json格式