4267a229创建于 2024年8月2日历史提交
/*
    Copyright (c) [2023] [squallzhao]
    fountain is licensed under APACHE LICENSE, VERSION 2.0.
    You can use this software according to the terms and conditions of the APACHE LICENSE, VERSION 2.0.
    You may obtain a copy of APACHE LICENSE, VERSION 2.0 at: https://www.apache.org/licenses/LICENSE-2.0
*/
package microservice

import net.http.*
import std.io.*
import encoding.url.*
import std.fs.*
import encoding.json.*
import microservice.web.*
import microservice.registry.*
import microservice.resttemplate.*
import microservice.web.http11.*
import microservice.web.socket.*
import microservice.web.server.*
import microservice.web.server.reqres.*
import microservice.config.*
import microservice.web.codecs.*
import microservice.web.handler.*
import microservice.exception.*
import microservice.common.*

/**
java -jar -Deureka.server.response-cache-update-interval-ms=1 eureka-server.jar
*/

/*
"output_type": "executable", 
"output_type": "dynamic",
*/

class BootServlet <: IServlet{
    public func service(req:HttpServletRequest,res:HttpServletResponse){
        println("BootServlet called, Param a="+req.getParameter("a"))
        println("BootServlet called, Header NAME="+req.getAttribute("NAME"))
        
        var root = ResponseJsonObject()
        root.put("code", 0)
        root.put("msg", "success")
        var data = ResponseJsonObject()
        data.put("uid","123456")
        root.put("data",data)
        res.setBody(root)
        
    }
} 

class BootPostServlet <: IServlet{
    public func service(req:HttpServletRequest,res:HttpServletResponse){
        var input: RequestJsonObject = RequestJsonObject(req.getBodyObject())
        println("post input parameter: "+input.getString("abc"))
        
        var root = ResponseJsonObject()
        root.put("code", 0)
        root.put("msg", "success")
        var data = ResponseJsonObject()
        data.put("uid","123456")
        root.put("data",data)
        res.setBody(root)
    }
} 

class NoMappingHandler <: IExceptionHandler{
  public func handle(req: HttpServletRequest, res: HttpServletResponse, e: Exception): Unit{
     res.setBody("No URL Match")
     res.setStatus(500)
  }
}

func microbootServer(){
    let micro = MicroBootApplication()
    micro.getRouter().get("/fo", BootServlet())
    micro.getRouter().post("/fo2", BootPostServlet())

    GlobalExceptionHandler.add(ExceptionClassify.NOMAPPING_FIND_EXCEPTION, NoMappingHandler())
    micro.run()
    
    println("do get call response="+micro.getRestTemplate().getForEntity("http://hello/fo","a=123"))
    println("do post call response="+micro.getRestTemplate().postForEntity("http://hello/fo2","{\"abc\":\"zhao\"}"))
}

main(): Unit{
    println("hello microbootServer")
    microbootServer()
    Common.sleeps(1000000)
}