Spring Cloud OpenFeign: Difference between revisions
Jump to navigation
Jump to search
(9 intermediate revisions by the same user not shown) | |||
Line 53: | Line 53: | ||
|} | |} | ||
== | ==Mocking API== | ||
<source lang="bash"> | <source lang="bash"> | ||
mkdir -p ~/Documents/flask-playground/MockApi | mkdir -p ~/Documents/flask-playground/MockApi | ||
Line 62: | Line 62: | ||
<source lang="bash"> | <source lang="bash"> | ||
rm rf ~/Documents/flask-playground/MockApi/* | rm rf ~/Documents/flask-playground/MockApi/*.py | ||
cat << EOF | tee ~/Documents/flask-playground/MockApi/ | cat << EOF | tee ~/Documents/flask-playground/MockApi/__main__.py >/dev/null | ||
from flask import Flask, request, json, jsonify | from flask import Flask, request, json, jsonify | ||
import time | |||
app = Flask(__name__) | app = Flask(__name__) | ||
Line 73: | Line 74: | ||
@app.route("/api/v1/companies") | @app.route("/api/v1/companies") | ||
def data(): | def data(): | ||
time.sleep(5) | |||
lang_code = request.args.get('lang_code') | lang_code = request.args.get('lang_code') | ||
print(f'lang_code: {lang_code}!') | print(f'lang_code: {lang_code}!') | ||
# return json.dumps(companies) | |||
return jsonify(companies) | return jsonify(companies) | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
app.run(host='127.0.0.1', port=1983) | app.run(host='127.0.0.1', port=1983, debug= True) | ||
EOF | EOF | ||
python ~/Documents/flask-playground/MockApi | python ~/Documents/flask-playground/MockApi | ||
</source> | </source> | ||
<source lang="bash"> | <source lang="bash"> | ||
curl -k http://127.0.0.1:1983/api/v1/companies?lang_code=EN | time curl -k http://127.0.0.1:1983/api/v1/companies?lang_code=EN | ||
curl -i http://127.0.0.1:1983/api/v1/companies?lang_code=EN | time curl -i http://127.0.0.1:1983/api/v1/companies?lang_code=EN | ||
http GET 127.0.0.1:1983/api/v1/companies?lang_code=EN --pretty=colors | time http GET 127.0.0.1:1983/api/v1/companies?lang_code=EN --pretty=colors | ||
</source> | </source> | ||
Line 93: | Line 95: | ||
{| | {| | ||
| valign="top" | | | valign="top" | | ||
* [https://docs.spring.io/spring-cloud-openfeign/docs/3.1.3/reference/html/appendix.html OpenFeign » Common application properties] | * [https://docs.spring.io/spring-cloud-openfeign/docs/3.1.3/reference/html/appendix.html OpenFeign » 3.1 » Common application properties] | ||
* [https:// | * [https://cloud.spring.io/spring-cloud-openfeign/2.1.x/single/spring-cloud-openfeign.html#spring-cloud-feign-overriding-defaults OpenFeign » 2.1 » Overriding Feign Defaults] | ||
* [https://docs.spring.io/spring-cloud-openfeign/docs/3.1.3/reference/html/index.html#spring-cloud-feign-overriding-defaults OpenFeign » 3.1 » Overriding Feign Defaults] | |||
* [https://medium.com/javarevisited/simple-implementation-of-spring-cloud-openfeign-7f022630d01d OpenFeign » Simple Implementation] | * [https://medium.com/javarevisited/simple-implementation-of-spring-cloud-openfeign-7f022630d01d OpenFeign » Simple Implementation] | ||
* [https://www.javacodemonk.com/feign-requestinterceptor-in-spring-boot-cbe5d967 OpenFeign » Request Interceptor] | * [https://www.javacodemonk.com/feign-requestinterceptor-in-spring-boot-cbe5d967 OpenFeign » Request Interceptor] | ||
Line 104: | Line 107: | ||
| valign="top" | | | valign="top" | | ||
* [https://cloud.spring.io/spring-cloud-openfeign/2.1.x/single/spring-cloud-openfeign.html#spring-cloud-feign-hystrix-fallbackk OpenFeign » 2.1 » CircuitBreaker Fallbacks] | |||
* [https://docs.spring.io/spring-cloud-openfeign/docs/3.1.3/reference/html/index.html#spring-cloud-feign-circuitbreaker-fallback OpenFeign » 3.1 » CircuitBreaker Fallbacks] | |||
* [https://stackoverflow.com/questions/40262132/ OpenFeign » Add a Request Interceptor] | |||
| valign="top" | | | valign="top" | | ||
Line 125: | Line 131: | ||
| valign="top" | | | valign="top" | | ||
* [[JSON Schema Validation]] | * [[JSON Schema Validation]] | ||
* [[Logback]] | |||
* [[WinSW]] | * [[WinSW]] | ||
* [[Log4j2]] | |||
* [[Spring]] | * [[Spring]] | ||
* [[Flask]] | * [[Flask]] |
Latest revision as of 02:27, 13 February 2024
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!--
others dependencies
-->
</dependencies>
</dependencyManagement>
|
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
</dependencies>
|
| |
timeout 60 telnet localhost 1983 \
;printf '\n'
|
nc -w 60 localhost 1983 \
;printf '\n'
|
Mocking API
mkdir -p ~/Documents/flask-playground/MockApi
python3 -m venv ~/.venv/flask --prompt="Flask"
source ~/.venv/flask/bin/activate
pip install Flask
rm rf ~/Documents/flask-playground/MockApi/*.py
cat << EOF | tee ~/Documents/flask-playground/MockApi/__main__.py >/dev/null
from flask import Flask, request, json, jsonify
import time
app = Flask(__name__)
app.json.sort_keys = False
companies = [{'id': 1, 'name': 'Chorke', 'concern': False}, {'id': 2, 'name': 'Academia', 'concern': True}]
@app.route("/api/v1/companies")
def data():
time.sleep(5)
lang_code = request.args.get('lang_code')
print(f'lang_code: {lang_code}!')
# return json.dumps(companies)
return jsonify(companies)
if __name__ == "__main__":
app.run(host='127.0.0.1', port=1983, debug= True)
EOF
python ~/Documents/flask-playground/MockApi
time curl -k http://127.0.0.1:1983/api/v1/companies?lang_code=EN
time curl -i http://127.0.0.1:1983/api/v1/companies?lang_code=EN
time http GET 127.0.0.1:1983/api/v1/companies?lang_code=EN --pretty=colors