И сервер HTTP и обратный прокси -сервер.
Веб -сервер и веб -структура платформы Android. Он предоставляет такие аннотации, как SpringMVC, и если вы знакомы с SpringMVC, вы можете освоить их очень быстро.
Развернуть веб -сервер:
Server server = AndServer . webServer ( context )
. port ( 8080 )
. timeout ( 10 , TimeUnit . SECONDS )
. build ();
// startup the server.
server . startup ();
...
// shutdown the server.
server . shutdown (); Он также имеет некоторые функции, такие как inetAddress(InetAddress) , serverSocketFactory(ServerSocketFactory) и sslContext(SSLContext) , в зависимости от того, чего вы хотите достичь.
@ RestController
@ RequestMapping ( path = "/user" )
public class UserController {
@ PostMapping ( "/login" )
public String login ( @ RequestParam ( "account" ) String account ,
@ RequestParam ( "password" ) String password ) {
...
return "Successful." ;
}
@ GetMapping ( path = "/{userId}" )
public User info ( @ PathVariable ( "userId" ) String userId ,
@ QueryParam ( "fields" ) String fields ) {
User user = findUserById ( userId , fields );
...
return user ;
}
@ PutMapping ( path = "/{userId}" )
public void modify ( @ PathVariable ( "userId" ) String userId
@ RequestParam ( "age" ) int age ) {
...
}
}Приведенный выше код будет генерировать следующие два HTTP API:
POST http://.../user/login
GET http://.../user/uid_001?fields=id,name,age
PUT http://.../user/uid_001
Получите информацию об подключении с клиентом:
@ GetMapping ( path = "/connection" )
void getConnection ( HttpRequest request , ...) {
request . getLocalAddr (); // HostAddress
request . getLocalName (); // HostName
request . getLocalPort (); // server's port
request . getRemoteAddr (); // HostAddress
request . getRemoteHost (); // Especially HostName, second HostAddress
request . getRemotePort (); // client's port
...
}Документация и дополнительная информация см. Веб -сайт.
Развернуть обратный прокси -сервер:
Server server = AndServer . proxyServer ()
. addProxy ( "www.example1.com" , "http://192.167.1.11:8080" )
. addProxy ( "example2.com" , "https://192.167.1.12:9090" )
. addProxy ( "55.66.11.11" , "http://www.google.com" )
. addProxy ( "192.168.1.11" , "https://github.com:6666" )
. port ( 80 )
. timeout ( 10 , TimeUnit . SECONDS )
. build ();
// startup the server.
server . startup ();
...
// shutdown the server.
server . shutdown ();Примечание : это просто обратный прокси и не имеет возможности позаботиться о балансе нагрузки.
Добавьте плагин в свой скрипт сборки проекта:
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath ' com.yanzhenjie.andserver:plugin:2.1.12 '
.. .
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
.. . А затем добавьте AndServer зависимость от вашего модуля:
apply plugin : ' com.yanzhenjie.andserver '
.. .
dependencies {
implementation ' com.yanzhenjie.andserver:api:2.1.12 '
annotationProcessor ' com.yanzhenjie.andserver:processor:2.1.12 '
.. .
} Если вы используете Kotlin, замените annotationProcessor на kapt .
Перед тем, как отправить запросы на привлечение, участники должны соблюдать соглашение.
Copyright Zhenjie Yan
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.